package com.afei.mybatis.mapper;

import com.afei.mybatis.pojo.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @param
 * @author
 * @return
 */
public interface SelectMapper {
    /**
     * mybatis的各种查询功能
     * 1.若查询出的数据只有一条
     * a>可以通过实体类对象接收
     * b>可以通过list集合接收
     * c>可以通过map集合接收
     *  结果：以字段的名字作为map的键，以字段的值作为map的值
     * 2.若查询出的数据有多条
     * a>可以通过list集合接收
     * b>可以通过map类型的list集合接收
     * c>可以在mapper接口的方法上添加@MapKey注解，此时就可以将每条数据转换的map集合作为值，
     *   以某个字段的值作为键，放在同一个map集合中
     *  注意：一定不能通过实体类对象接收，此时会抛出异常TooManyResultsException
     * mybatis中设置了默认的类型别名：
     *  java.lang.Integer-->int,integer
     *  int-->_int,_integer
     *  Map-->map
     *  String-->string
     *
     */

    /**
     * 根据id来查询用户
     */
    User getUserById(@Param("id") Integer id);
    /**
     * 查询所有用户
     */
    List<User> getAllUser();
    /**
     * 查询用户信息的总记录数
     */
    Integer getCountUser();
    /**
     *  根据用户id查询用户信息为map集合
     */
    Map<String,Object> getUserByIdToMap(@Param("id") Integer id);
    /**
     * 查找所有用户信息为map集合
     */
    //List<Map<String,Object>> getAllUserToMap();
    @MapKey("id")
    Map<String,Object> getAllUserToMap();
}
